#include "file_server.hpp"

DEFINE_bool(run_mode, false, "程序的运行模式,false-调试； true-发布；");
DEFINE_string(log_file, "", "发布模式下，用于指定日志的输出文件");
DEFINE_int32(log_level, 0, "发布模式下，用于指定日志输出等级");

DEFINE_string(registry_host, "http://127.0.0.1:2379", "服务注册中心地址");
DEFINE_string(base_service, "/service", "服务监控根目录");
DEFINE_string(instance_name, "/file_service/instance", "当前实例名称");
DEFINE_string(access_host, "127.0.0.1:10002", "当前实例的外部访问地址");

DEFINE_int32(listen_port, 10002, "Rpc服务器监听端口");
DEFINE_int32(rpc_timeout, -1, "Rpc调用超时时间");
DEFINE_int32(rpc_threads, 1, "Rpc的IO线程数量");
DEFINE_string(base_path, "./data/", "文件数据储存路径");

int main(int argc,char* argv[])
{
    google::ParseCommandLineFlags(&argc, &argv, true);
    InitLog(FLAGS_run_mode,FLAGS_log_file,FLAGS_log_level);

    xu::FileServerBuilder fsb;
    fsb.SetRcpReg(FLAGS_registry_host,FLAGS_base_service + FLAGS_instance_name,
        FLAGS_access_host);
    fsb.SetRpcServer(FLAGS_listen_port,FLAGS_rpc_timeout,FLAGS_rpc_threads,FLAGS_base_path);

    auto server = fsb.Build();
    if(!server)
    {
        LOG_ERROR("获取服务器失败");
        return -1;
    }

    server->Start();
    return 0;
}